//
//  main.m
//  02-ClassAndObject
//
//  Created by dllo on 16/7/5.
//  Copyright © 2016年 LST. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Fraction.h"
int main(int argc, const char * argv[]) {
    Fraction *fraction1 = [[Fraction alloc] initWithNum:5 Deno:4];
    Fraction *fraction2 = [[Fraction alloc] initWithNum:7 Deno:9];
    [fraction1 addFraction:fraction2];
    [fraction1 subFraction:fraction2];
    [fraction1 mulFraction:fraction2];
    [fraction1 divFraction:fraction2];
    
    /*(一) 快捷键
     command + 0 开/收起左边栏
     command + option + 0 开/收起右边栏
     command + shift + y 开/收起下边栏
     command + r 运行
     command + c 复制
     command + v 粘贴
     command + b 编译
     command + z 撤销
     command + n 新建文件
     command + shift + n 新建工程
     command + shift + z 重做/反撤销
     
     (二)移动光标
     command + ← 移动到当前行的最前面
     command + → 移动到当前行的最后面
     command + ↑ 移动到所有行的第一行
     command + ↓ 移动到所有行的最后一行起始位置
     
     (三) 选中文字
     shift + ← 选中向左一个字
     shift + → 选中向右一个字
     shift + ↑ 从当前光标位置开始,选中向上一行,对应位置
     shift + ↓ 从当前光标位置开始,选中向下一行,对应位置
     
     command + shift + ← 选中从光标开始,左边所有的文字
     command + shift + → 选中从光标开始,右边所有的文字
     command + shift + ↑ 选中从光标开始,上边所有的文字
     command + shift + ↓ 选中从光标开始,下面的所有文字
     */
    
    
    
    /* 1.类和对象
     * 类: 一个具有相同特征的行为的事物抽象集合
     * 对象: 类的实例,也称作类的实现
     * 面向对象的思想,万物都是对象
     * 面向对象语言是面向对象思想的具体体现
     * OOP 面向对象编程
     * OOD 面向对象设计
     * 面向对象三大特征(特性)封装, 继承, 多态 提高代码的复用
     
     * 2.Objective-C (OC)
     * 与C语言的区别
     * OC属于C语言的扩展
     * OC有类的概念
     * OC中声明属性和方法在 .h中
     * OC中实现方法在 .m中
     * .mm 是C++的文件, 在这个文件里可以编写C++代码
     * OC中的根类 NSObject
     
     * 3.创建OC的实例
     * 消息语法[Objc doSomething];
     * 向Objc对象去发送一个doSomething的方法, 让他去调用
     * 类方法的调用 (由类名去调用其 + 方法)
     * +alloc 开辟内存空间
     * 实例方法的调用
     * -init
     
     */
    NSObject *objc = [NSObject alloc];
    NSObject *newObject =[objc init];
    // 创建一个person对象
    Person *per = [[Person alloc] init];
    // 公开的成员可以直接通过 -> 赋值 -> 取值
    per->_age = 10;
    // 受保护的成员不能通过->去访问
    // id 与 instancetype
    // instancetype 在作为参数的返回值的时候是与id是一样的,系统编译器会把id类型转成instancetype(即当前对象)
    // id 可以作为变量类型去使用,但instancetype不可以
    
    return 0;
}









